package com.sky.demo03;

import org.codehaus.groovy.transform.ThreadInterruptibleASTTransformation;

/**
 * 目标：演示synchronized的可重入
 * 1. 自定义一个线程类
 * 2. 在线程类的run方法中使用嵌套的同步代码块
 * 3. 使用两个线程来执行
 */
public class Test01Visibility {

    public static void main(String[] args) throws InterruptedException {
        new MyThread().start();
        new MyThread().start();
    }

    public static void test01() {
        synchronized (MyThread.class) {
            System.out.println(Thread.currentThread().getName() + "进入了同步代码块2");
        }
    }
}

class MyThread extends Thread {

    @Override
    public void run() {
        synchronized (MyThread.class) {
            System.out.println(getName() + "进入了同步代码块1");

            Test01Visibility.test01();
        }
    }


}